Relational databases and related utilities are well established and are used for many years now in applications and systems related to almost all areas of everyday life, including commerce, finance, and others. In recent years, additional technologies such as XML, have permeated into multiple areas as well, and applications using such techniques are widespread, especially for certain types of computerized applications, and in particular applications involving the Internet.
Some products integrate or use relational database systems side by side with XML or other data type systems, wherein each data type is stored and handled in the more appropriate manner.
In such systems, there is often a need for handling joint conjunctive queries, i.e., queries involving elements of relational data with elements of XML data at the same time. Activating a relevant engine for each data type, followed by combining the results, is inefficient and involves significant redundant work, since no engine can easily utilize results of the other engine, and hence the resulting performance is poor.
On the other hand, developing a specific query language for arbitrary systems combining two or more data sources implies significant redundant development work, since efficient engines already exist for handling each type of data.
There is thus a need in the art for a method and apparatus for resolving conjunctive queries, in a manner that will combine the utilization of existing systems, with the ability to use each system in an efficient manner, so as to minimize development work as well as provide high efficiency. There is also a need for a method and apparatus for handling efficiently mutually dependent conjunctive queries, such as Datalog programs.